/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.ucsur.tp.sistemainventario.dao;

import java.sql.*;
import edu.ucsur.tp.sistemainventario.beans.Proveedor;
import edu.ucsur.tp.sistemainventario.utils.Conexion;
import java.util.*;
/**
 *
 * @author luis.hidalgo
 */
public class MySqlProveedorDAO implements ProveedorDAO {
  
  public void insertarProveedor(Proveedor proveedor) {
    String sql = "INSERT INTO proveedor ( codigo, razon_social, ruc, direccion, departamento, provincia, distrito, telefono, contacto, correo, comentario ) ";
    sql += " VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) ";
    try {
      Connection conn = Conexion.getConnection();
      PreparedStatement pstmt = conn.prepareStatement(sql);
      pstmt.setInt(1, proveedor.getCodigo());
      pstmt.setString(2, proveedor.getRazon_social());
      pstmt.setString(3, proveedor.getRuc());
      pstmt.setString(4, proveedor.getDireccion());
      pstmt.setString(5, proveedor.getDepartamento());
      pstmt.setString(6, proveedor.getProvincia());
      pstmt.setString(7, proveedor.getDistrito());
      pstmt.setString(8, proveedor.getTelefono());
      pstmt.setString(9, proveedor.getContacto());
      pstmt.setString(10, proveedor.getCorreo());
      pstmt.setString(11, proveedor.getComentarios());
      pstmt.executeUpdate();
      pstmt.close();
      conn.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
  
  public void actualizarProveedor (Proveedor proveedor){
      String sql = "UPDATE proveedor SET codigo = ?, razon_social = ?, ruc = ?, direccion = ?, departamento = ?, provincia = ?, distrito = ?,telefono = ?,contacto = ?, correo = ?,comentario = ? WHERE codigo = ? ";
    try {
      Connection conn = Conexion.getConnection();
      PreparedStatement pstmt = conn.prepareStatement(sql);
      pstmt.setInt(1, proveedor.getCodigo());
      pstmt.setString(2, proveedor.getRazon_social());
      pstmt.setString(3, proveedor.getRuc());
      pstmt.setString(4, proveedor.getDireccion());
      pstmt.setString(5, proveedor.getDepartamento());
      pstmt.setString(6, proveedor.getProvincia());
      pstmt.setString(7, proveedor.getDistrito());
      pstmt.setString(8, proveedor.getTelefono());
      pstmt.setString(9, proveedor.getContacto());
      pstmt.setString(10, proveedor.getCorreo());
      pstmt.setString(11, proveedor.getComentarios());
      pstmt.executeUpdate();
      pstmt.close();
      conn.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
  
  public void eliminarProveedor(int codigo) {
    String sql = "DELETE FROM proveedor WHERE codigo = ? ";
    try {
      Connection conn = Conexion.getConnection();
      PreparedStatement pstmt = conn.prepareStatement(sql);
      pstmt.setInt(1, codigo);
      pstmt.executeUpdate();
      pstmt.close();
      conn.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
  
  public List<Proveedor> getListaProveedorPorNombre(String filtroNombre) {
    List<Proveedor> listaProveedor = new ArrayList<Proveedor>();
    String sql = "SELECT * FROM proveedor WHERE nombres like ?";
    try {
      Connection conn = Conexion.getConnection();
      PreparedStatement pstmt = conn.prepareStatement(sql);
      pstmt.setString(1, "%" + filtroNombre + "%");
      ResultSet rs = pstmt.executeQuery();
      while (rs.next()) {
        Proveedor proveedor = new Proveedor();
        proveedor.setCodigo(rs.getInt("codigo"));
        proveedor.setRazon_social(rs.getString("razon_social"));
        proveedor.setRuc(rs.getString("ruc"));
        proveedor.setDireccion(rs.getString("direccion"));
        proveedor.setDepartamento(rs.getString("departamento"));
        proveedor.setProvincia(rs.getString("provincia"));
        proveedor.setDistrito(rs.getString("distrito"));
        proveedor.setTelefono(rs.getString("telefono"));
        proveedor.setContacto(rs.getString("contacto"));
        proveedor.setCorreo(rs.getString("correo"));
        proveedor.setComentarios(rs.getString("comentarios"));
        listaProveedor.add(proveedor);
      }
      rs.close();
      pstmt.close();
      conn.close();
      return listaProveedor;
    } catch (Exception ex) {
      ex.printStackTrace();
    }
    return null;
  }
  
  public Proveedor getProveedor(int codigo) {
    String sql = "SELECT * FROM proveedor WHERE codigo = ?";
    try {
      Connection conn = Conexion.getConnection();
      PreparedStatement pstmt = conn.prepareStatement(sql);
      pstmt.setInt(1,codigo);
      ResultSet rs = pstmt.executeQuery();
      
      if (rs.next()) {
        Proveedor proveedor = new Proveedor();
        proveedor.setCodigo(rs.getInt("codigo"));
        proveedor.setRazon_social(rs.getString("razon_social"));
        proveedor.setRuc(rs.getString("ruc"));
        proveedor.setDireccion(rs.getString("direccion"));
        proveedor.setDepartamento(rs.getString("departamento"));
        proveedor.setProvincia(rs.getString("provincia"));
        proveedor.setDistrito(rs.getString("distrito"));
        proveedor.setTelefono(rs.getString("telefono"));
        proveedor.setContacto(rs.getString("contacto"));
        proveedor.setCorreo(rs.getString("correo"));
        proveedor.setComentarios(rs.getString("comentarios"));
        return proveedor;
      }
      rs.close();
      pstmt.close();
      conn.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
    return null;
  }
    
}
